応用情報技術者 PR

【応用情報技術者】スタック領域とは何か

記事内に商品プロモーションを含む場合があります

●スタック領域とは
確保した順番とは逆の順番で解放するメモリ領域。

出題された回(平成29年度春期以降)
平成31年度春期

スタック領域の説明

スタック領域とは、確保した順番とは逆の順番で解放するメモリ領域です
メモリ領域には、スタック領域とヒープ領域があります。それぞれ見てみましょう。

そもそもメモリ領域とは

メモリ領域とは、CPUがアプリやプログラムを動かすために必要なデータを一時的に保管しておく記憶装置のことです。よくCPUの「作業机」なんて言われたりします。

例えば、大量のデータが入力されたExcelファイルを開くとパソコンの動作が重たくなります。これはExcelファイルがメモリ領域を多く占領してるからなんですね。
作業机に大量のノートを置かれて、何をしたらいいか分からなくなっているCPUを想像してもらえれば分かりやすいと思います。

スタック領域

スタック領域とは、確保した順番とは逆の順番で解放するメモリ領域です

A→B→Cの順番で確保された領域は、C→B→Aの順番で解放されます。
積み上げた荷物を上から持っていくのと同じ要領です。

ヒープ領域

ヒープ領域とは、プログラムが好きな順番で領域を確保したり解放できるメモリ領域です

ヒープ領域にデータを保存するとき、データを保存できる分の領域が空いていればどこにでも保存が出来ます。また、データを取り出す順番も決められておらず、どのような順番でデータを取り出しても構いません。

過去問

応用情報技術者 午前試験
平成31年度春期問17

プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち、適切なものはどれか。

ア サブルーチンからの戻り番地の退避にはスタック領域が使用され、割当てと解放の順序に関連がないデータにはヒープ領域が使用される。

イ スタック領域には未使用領域が存在するが、ヒープ領域には未使用領域は存在しない。

ウ ヒープ領域はスタック領域の予備領域であり、スタック領域が一杯になった場合にヒープ領域が動的に使用される。

エ ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって、データの格納と取出しを行う。

正解と解説

正解は”ア”
プログラムの処理は2つに分けられます。
・メインルーチン:プログラムのメイン機能となる処理
・サブルーチン:他の処理から呼び出される処理

プログラムの処理は基本メインルーチンで行われますが、必要があればサブルーチンを呼び出すということです。また、サブルーチンの中でサブルーチンを呼び出すこともあります。

メインルーチンからサブルーチン1を呼び出す時、サブルーチン1が終わった後、メインルーチンのどこに戻れば良いのかという情報(メインルーチンの復帰先)をスタック領域に格納します。サブルーチン1が終わったらスタック領域に格納されたメインルーチンの復帰先に戻ります。
サブルーチン2からサブルーチン3を呼び出す時も同様に、サブルーチン2の復帰先をスタック領域に格納し、サブルーチン3が終わったらスタック領域に格納されたサブルーチン2の復帰先に戻ります。

サブルーチンが完了した時、呼び出し元である処理の復帰先に戻ります。
なので、サブルーチンの復帰先の格納にはスタック領域が使われるという訳です。